package easybooking;

import java.util.*;
import easybooking.data.*;
import java.rmi.*;

/**
 * Interface Class on Editor Client representing RMI Stub to FlightManagementImpl.
 * @author Hakan Keles
 *
 */

// <editor-fold defaultstate="collapsed" desc=" UML Marker ">
// #[regen=yes,id=DCE.4210965A-A7A7-F3FA-E692-6F9BF8B0DAED]
// </editor-fold>
public interface FlightManagement extends Remote {

    /**
     * Creates a new Customer Object
     * @param firstName The firstname of the created customer
     * @param lastName The lastname of the created customer
     * @param street The street of the created customer
     * @param zip The zip code of the created customer
     * @param city The city of the created customer
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.B2B25A9F-7991-8AD7-49C4-F3FE95000ADF]
    // </editor-fold>
    /**
     * Creates a new customer object
     * @param firstname The firstname of the created customer
     * @param lastname The lastname of the created customer
     * @param street The street of the created customer
     * @param zip The zip of the created customer
     * @param city The city of the created customer
     * @return the created customer object
     * @throws RemoteException
     */
    public Customer createCustomer(String firstname, String lastname, String street, int zip, String city) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.E334B128-22C6-56D1-E02B-8BEA51B1F542]
    // </editor-fold>
    /**
     * deactivates a customer object and all booking objects which are associated to them
     * @param c is the customer object which should be deactivated
     * @throws RemoteException
     */
    public void deactivate(Customer c) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.63B7F040-E43F-EE00-6033-301F0672F679]
    // </editor-fold>
    /**
     * inserts a changed customer object back into the DB
     * @param c is the customer object which has been changed
     * @throws RemoteException
     */
    public void save(Customer c) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.EF6D0FCC-C24B-AD9E-DDD9-97FB28DDB91B]
    // </editor-fold>
    /**
     * inserts a changed airl object back into the DB
     * @param airl is the airline object which has been changed
     * @throws RemoteException
     */
    public void save(Airline airl) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.FD4FB4A0-D0EB-92DC-EC69-E8068E512443]
    // </editor-fold>
    /**
     * inserts a changed airport object back into the DB
     * @param airp is the airport object which has been changed
     * @throws RemoteException
     */
    public void save(Airport airp) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.62AF2B69-6B7B-EAA5-4605-DA885F2847C2]
    // </editor-fold>
    /**
     * inserts a changed booking object back into the DB
     * @param b is the booking object which has been changed
     * @throws RemoteException
     */
    public void save(Booking b) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.3F26D5D3-BCDF-17F5-9B0B-4FBF7D38711A]
    // </editor-fold>
    /**
     * inserts a changed flight object back into the DB
     * @param f is the flight object which has been changed
     * @throws RemoteException
     */
    public void save(Flight f) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.7A27506F-5842-279B-FAAB-451A31DAB28A]
    // </editor-fold>
    /**
     * inserts a changed plane object back into the DB
     * @param p is the plane object which has been changed
     * @throws RemoteException
     */
    public void save(Plane p) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.EA74AD7D-181F-F454-8171-A2F38962DC03]
    // </editor-fold>
    /**
     * inserts a changed seat object back into the DB
     * @param s is the seat object which has been changed
     * @throws RemoteException
     */
    public void save(Seat s) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.DE5233C6-CF69-3610-B855-A5C363F7A8CC]
    // </editor-fold>
    /**
     * inserts a changed type object back into the DB
     * @param t is the type object which has been changed
     * @throws RemoteException
     */
    public void save(Type t) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.B5AC1496-CEB0-4B72-23E6-571F3CC4AABE]
    // </editor-fold>
    /**
     *returns all customer objects from the DB
     * @return a customer Vector with all customers
     * @throws RemoteException
     */
    public Vector<Customer> getAllCustomers() throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.DE5F1405-E641-5033-C75B-DB92DE7B03DC]
    // </editor-fold>
    /**
     * returns all airline objects from the DB
     * @return an airline Vector with all Airlines
     * @throws RemoteException
     */
    public Vector<Airline> getAllAirlines() throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.FDFE5305-2AB7-6203-4E2D-E92365E558D4]
    // </editor-fold>
    /**
     * returns all airport objects from the DB
     * @return an airport Vector with all Airports
     * @throws RemoteException
     */
    // Testting
    public Vector<Airport> getAllAirports() throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.1CA61602-6778-23C6-D053-8048D8D5693B]
    // </editor-fold>
    /**
     * returns all booking objects from the DB
     * @return a booking Vector with all Bookings
     * @throws RemoteException
     */
    public Vector<Booking> getAllBookings() throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.48BC2009-1E54-8993-DC7C-701D69416679]
    // </editor-fold>
    /**
     * returns all flight objects from the DB
     * @return a flight Vector with all Flights
     * @throws RemoteException
     */
    public Vector<Flight> getAllFlights() throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.02131326-45F6-8944-81C7-D4B464032E8E]
    // </editor-fold>
    /**
     * returns all plane objects from the DB
     * @return a plane Vector with all Planes
     * @throws RemoteException
     */
    public Vector<Plane> getAllPlanes() throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.1BADAA07-0C10-DE77-641C-83B3E4EC7698]
    // </editor-fold>
    /**
     * returns all seat objects from the DB
     * @return a seat Vector with all Seats
     * @throws RemoteException
     */
    public Vector<Seat> getAllSeats() throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.69B4D2CF-8B50-E272-2FEF-00E694627CDF]
    // </editor-fold>
    /**
     * returns all type objects from the DB
     * @return a type Vector with all Types
     * @throws RemoteException
     */
    public Vector<Type> getAllTypes() throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.22A7F518-CD96-926A-7EFF-43E457FD0596]
    // </editor-fold>
    /**
     * Creates a new airline object
     * @param name The name of the airline
     * @param initials The initials of the created airline
     * @return the created airline object
     * @throws RemoteException
     */
    public Airline createAirline(String name, String initials) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.9F4E7612-DEF1-25BD-72B7-FEBB3389563F]
    // </editor-fold>
    /**
     * Creates a new airport object
     * @param name The name of the created airport
     * @param initials The initials of the created airport
     * @param city The city of the created airport
     * @return the created airport object
     * @throws RemoteException
     */
    public Airport createAirport(String name, String initials, String city) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.D2A35613-3D1E-D059-9AE7-87D7A0A71C6E]
    // </editor-fold>
    /**
     * Creates a new booking object
     * @param dateTime The Date and the Time of the created booking
     * @param customerId Association to the customer of the created booking
     * @param flightId Association to the flight of the created booking
     * @param seatId Association to the seat of the created booking
     * @return the created booking object
     * @throws RemoteException
     */
    public Booking createBooking(Date dateTime, int customerId, int flightId, int seatId) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.1B3B51CF-F6E0-AAFD-2D66-661C3A613A5F]
    // </editor-fold>
    /**
     * Creates a new flight object
     * @param dateTime The Date and the time of the created flight
     * @param planeId Association to the plane of the created flight
     * @param startAirportId Association to the startAirport of the created flight
     * @param stopAirportId Association to the stopAirportId of the created flight
     * @return the created flight object
     * @throws RemoteException
     */
    public Flight createFlight(Date dateTime, int planeId, int startAirportId, int stopAirportId) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.BFEA9129-9A63-0993-D5B9-65D1A874052A]
    // </editor-fold>
    /**
     * Creates a new plane object
     * @param typeId Association to the type of the created plane
     * @param airlineId Association to the airline of the created plane
     * @param name The name of the created plane
     * @return the created plane object
     * @throws RemoteException
     */
    public Plane createPlane(int typeId, int airlineId, String name) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.5429A277-7874-8407-5276-4677D2D8240D]
    // </editor-fold>
    /**
     * Creates a new seat object
     * @param row The row of the created seat
     * @param seat The seat of the created seat
     * @param planeId Association to the plane of the created seat
     * @return the created seat object
     * @throws RemoteException
     */
    public Seat createSeat(int row, char seat, int planeId) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.5DFD0D0C-011A-7259-A85B-3A87CFED6761]
    // </editor-fold>
    /**
     * Creates a new type object
     * @param name The name of the created type
     * @param rows The rows of the created type
     * @param columns The columns of the created type
     * @return the created type object
     * @throws RemoteException
     */
    public Type createType(String name, int rows, int columns) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.ACC2B3F6-7A51-E9F5-42E1-475873C68682]
    // </editor-fold>
    /**
     * deactivates an airline object and all plane objects which are associated to them
     * @param airl is the airline object which should be deactivated
     * @throws RemoteException
     */
    public void deactivate(Airline airl) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.321579EC-8246-52C6-0D75-86E0E812F572]
    // </editor-fold>
    /**
     * deactivates an airport object and all flight objects which are associated to them
     * @param airp is the airport object which should be deactivated
     * @throws RemoteException
     */
    public void deactivate(Airport airp) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.EEBB9EE1-F6A9-4354-CEEF-983876E32E61]
    // </editor-fold>
    /**
     * deactivates a booking object
     * @param b is the booking object which should be deactivated
     * @throws RemoteException
     */
    public void deactivate(Booking b) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.9C7F7DD5-F822-C308-8ED4-17C5F664211A]
    // </editor-fold>
    /**
     * deactivates a flight object and all booking objects which are associated to them
     * @param f is the flight object which should be deactivated
     * @throws RemoteException
     */
    public void deactivate(Flight f) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.3EAB6BCF-6D53-4B11-8ACF-35C07209ED62]
    // </editor-fold>
    /**
     * deactivates a plane object and all plane plus flight objects which are associated to them
     * @param p is the plane object which should be deactivated
     * @throws RemoteException
     */
    public void deactivate(Plane p) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.BD4D82B2-3A4E-2458-3635-334F33AF1246]
    // </editor-fold>
    /**
     * deactivates a seat object by calling the sMapper up
     * @param s is the airline object which should be deactivated
     * @throws RemoteException
     */
    public void deactivate(Seat s) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.C0740E8E-C7F3-F720-60D7-3ABFD969CFE6]
    // </editor-fold>
    /**
     * deactivates a type object and all plane objects which are associated to them
     * @param t is the type object which should be deactivated
     * @throws RemoteException
     */
    public void deactivate(Type t) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.6CE83A9A-D87D-CD3E-4331-22EB3C07763F]
    // </editor-fold>
    /**
     * returns a customer object from the DB by key
     * @param id is the id of the customer object which should be returned
     * @return The customer with index of <code>id</code>
     * @throws RemoteException
     */
    public Customer getCustomerByKey(int id) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.2FDD71CB-1316-CCBE-7A56-A6E5EA74D3BC]
    // </editor-fold>
    /**
     * return a customer object from the DB by Lastname
     * @param lastname
     * @return a customer Vector with lastname of <code>lstname</code>
     * @throws RemoteException
     */
    public Vector<Customer> getCustomerByLastName(String lastname) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.69B895D6-65AF-61A3-E9C0-15F6EFFE1D2A]
    // </editor-fold>
    /**
     * returns all flights of a customer object from the DB by customer
     * @param c is the customer object those Flights should be returned
     * @return a flight Vector with Customer of <code>c</code>
     * @throws RemoteException
     */
    public Vector<Flight> getAllFlightsOfCustomer(Customer c) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.1ED282FC-A6A0-62BB-3919-FC761E9F3E71]
    // </editor-fold>
    /**
     * returns all bookings of a customer object from the DB by customer
     * @param c is the customer object those Bookings should be returned
     * @return a booking Vector containing all Bookings of Customer <code>c</code>
     * @throws RemoteException
     */
    public Vector<Booking> getBookingsOfCustomer(Customer c) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.4549E4DE-963A-133B-8AD8-429BBDF3259E]
    // </editor-fold>
    /**
     * returns all bookings of a Date object from the DB by Date
     * @param dateTime is the date object those Bookings should be returned
     * @return a booking Vector containing all Bookings of the Date <code>dateTime</code>
     * @throws RemoteException
     */
    public Vector<Booking> findBookingByDateTime(Date dateTime) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.E81811A3-F25A-FA42-34B5-DB03CA283802]
    // </editor-fold>
    /**
     * returns all booking objects of a customer by his id
     * @param id is the id of the customer object those bookings should be returned
     * @return a booking Vector containing all Bookings of a customer with index <code>id</code>
     * @throws RemoteException
     */
    public Vector<Booking> findBookingByCustomerId(int id) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.1AE7912C-92D1-1802-BCAF-2736CF347603]
    // </editor-fold>
    /**
     * returns a booking object from the DB by key
     * @param id is the id of the booking object which should be returned
     * @return The Booking with index <code>id</code>
     * @throws RemoteException
     */
    public Booking findBookingByKey(int id) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.87185CB6-A246-66C9-6CF4-38577BEFDABA]
    // </editor-fold>
    /**
     * returns a flight object from the DB by key
     * @param id is the id of the flight object which should be returned
     * @return The Flight with index <code>id</code>
     * @throws RemoteException
     */
    public Flight findFlightByKey(int id) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.E27FFC00-7F34-1224-1CC9-4EFB97A7E753]
    // </editor-fold>
    /**
     * returns all flight objects of a specific date or time
     * @param dateTime is the date object those flights should be returned
     * @return a flight Vector containing all Flights on the Date  <code>dateTime</code>
     * @throws RemoteException
     */
    public Vector<Flight> findFlightByDateTime(Date dateTime) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.E85975C2-D8D2-2499-4494-73B9A7620D11]
    // </editor-fold>
    /**
     * returns all flight objects of a plane
     * @param p is the plane object those flights should be returned
     * @return a flight Vector containing all Flights of the Plane <code>p</code>
     * @throws RemoteException
     */
    public Vector<Flight> findFlightByPlane(Plane p) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.F73DA4A1-DD5B-9CEE-E86F-8A686C2857EA]
    // </editor-fold>
    /**
     * returns all flight objects of a start airport
     * @param a is the  airport object those flights should be returned
     * @return a flight Vector containing all Flights of the Start Airport  <code>a</code>
     * @throws RemoteException
     */
    public Vector<Flight> findFlightByStartAirport(Airport a) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.7911E0B5-BBE0-3ADB-B267-936A37222CDB]
    // </editor-fold>
    /**
     * returns all flight objects of a destination airport
     * @param a is the  airport object those flights should be returned
     * @return a flight Vector containing all Flights of the Destination Airport  <code>a</code>
     * @throws RemoteException
     */
    public Vector<Flight> findFlightByDestAirport(Airport a) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.CB486995-DBD4-B40C-50E8-BE989F79849F]
    // </editor-fold>
    /**
     * returns a plane object from the DB by key
     * @param planeId is the id of the plane object which should be returned
     * @return the plane with passed id
     * @throws RemoteException
     */
    public Plane findPlaneByKey(int planeId) throws RemoteException;

    /**
     * returns a plane object from the DB by type
     * @param t is the type of the plane object which should be returned
     * @return a vector containing plane objects
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.83098BC6-0A1D-A116-664E-636640496C49]
    // </editor-fold>
    public Vector<Plane> findPlaneByType(Type t) throws RemoteException;

    /**
     * returns a plane object from the DB by airline
     * @param a is the airline of the plane object which should be returned
     * @return a vector containing plane objects
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.8ACA33F6-ED1D-34A1-C5AC-B2A56D9AA5ED]
    // </editor-fold>
    public Vector<Plane> findPlaneByAirline(Airline a) throws RemoteException;

    /**
     * returns plane objects from the DB by name
     * @param name is the name of the plane object which should be returned
     * @return a vector of plane objects
     * @throws RemoteException
     */
    public Vector<Plane> findPlaneByName(String name) throws RemoteException;
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.052177AB-B2FA-821A-68B7-F511898E36E8]
    // </editor-fold>

    /**
     * returns a seat object from the DB by id
     * @param seatId is the id of the seat object which should be returned
     * @return a seat object
     * @throws RemoteException
     */
    public Seat findSeatByKey(int seatId) throws RemoteException;

    /**
     * returns a type object from the DB by key
     * @param typeId the id of the searched type
     * @return a type object
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.6993AD16-C823-316D-E6C0-2A053822706F]
    // </editor-fold>
    public Type findTypeByKey(int typeId) throws RemoteException;

    /**
     * returns type objects from the DB by name
     * @param name is the name of the type object which should be returned
     * @return a vector of type objects
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.41DB074A-6AB8-0E5B-26E9-084C13E93AC1]
    // </editor-fold>
    public Vector<Type> findTypeByName(String name) throws RemoteException;

    /**
     * returns type objects from the DB by seats total
     * @param seatsTotal the total seats of type object which should be returned
     * @return a vector of type objects
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.9F471AB5-5F2C-959B-0DDD-E6CD7D8F8B5B]
    // </editor-fold>
    public Vector<Type> findTypeBySeatsTotal(int seatsTotal) throws RemoteException;

    /**
     * returns airline objects from the DB by name
     * @param name is the name of the airline object which should be returned
     * @return a vector of airline objects
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.29E27DB2-465D-DDC0-5D5B-8FBD0F98BACD]
    // </editor-fold>
    public Vector<Airline> findAirlineByName(String name) throws RemoteException;

    /**
     * returns airline objects from the DB by initials
     * @param initials is the initial of the airline object which should be returned
     * @return a vector of airline objects
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.6E319FD4-0486-22ED-581D-77355EC4435E]
    // </editor-fold>
    public Vector<Airline> findAirlineByInitials(String initials) throws RemoteException;

    /**
     * returns a airline object from the DB by key
     * @param airlineId the id of the searched airline
     * @return a airline object
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.93B119EE-B1A5-D0CC-2157-31244B00298C]
    // </editor-fold>
    public Airline findAirlineByKey(int airlineId) throws RemoteException;

    /**
     * returns a airport object from the DB by key
     * @param airportId the id of the searched airport
     * @return The Airport with index <code>airportId</code>
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.DEA78662-A43D-A780-A7D1-34755233FDE8]
    // </editor-fold>
    public Airport findAirportByKey(int airportId) throws RemoteException;

    /**
     * returns airport objects from the DB by name
     * @param name is the name of the airport object which should be returned
     * @return a vector of airport objects
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.4E3AC388-0288-E68B-BE89-A2BB97A2FB6B]
    // </editor-fold>
    public Vector<Airport> findAirportByName(String name) throws RemoteException;

    /**
     * returns airport objects from the DB by initials
     * @param initials is the initial of the airport object which should be returned
     * @return a vector of airport objects
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.EE776DA6-CECB-7F60-1BEB-7DB73C28F783]
    // </editor-fold>
    public Vector<Airport> findAirportByInitials(String initials) throws RemoteException;

    /**
     * returns airport objects from the DB by city
     * @param city is the city of the airport object which should be returned
     * @return a vector of airport objects
     * @throws RemoteException
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.DA5AA510-C9A0-65B8-125B-98AB1D122335]
    // </editor-fold>
    public Vector<Airport> findAirportByCity(String city) throws RemoteException;

//    public Type createType(String name, String rows, String columns) throws RemoteException;
    public Vector findTypeByMinSeatsTotal(int minSeats) throws RemoteException;

    /**
     * returns all flight objects of a plane by id
     * @param planeId is the id of the plane object those flights should be returned
     * @return a flight Vector containing all Flights of the Plane with Index  <code>planeId</code>
     * @throws RemoteException
     */
    public Vector findFlightByPlane(int planeId) throws RemoteException;

    /**
     * returns all flight objects of a start Airport
     * @param startAirportId is the Airport Id of the Airport objectthose flights should be returned
     * @return a flight Vector containing all Flights of the start Airport  <code>startAirportId</code>
     * @throws RemoteException
     */
    public Vector findFlightByStartAirport(int startAirportId) throws RemoteException;

    /**
     * returns all flight objects of a destination Airport
     * @param destAirportId is the Airport Id of the Airport object those flights should be returned
     * @return a flight Vector containing all Flights of the Destination Airport wit Index  <code>destAirportId</code>
     * @throws RemoteException
     */
    public Vector findFlightByDestAirport(int destAirportId) throws RemoteException;

    /**
     * returns all flight objects of a Customer
     * @param c is the Customer object which flights should be returned
     * @return a vector containing flight objects
     * @throws RemoteException
     */
    public Vector findFlightByCustomer(Customer c) throws RemoteException;

    /**
     * returns all flight objects of a Customer
     * @param customerId is the Customer Id of the Customer object which flights should be returned
     * @return a vector containing flight objects
     * @throws RemoteException
     */
    public Vector findFlightByCustomer(int customerId) throws RemoteException;

    /**
     * returns all flight objects of a Customer between two dates
     * @param c is the Customer object which flights should be returned
     * @param fromDate the first date of the dates between the flights should
     * be searched
     * @param toDate the second date of the dates between the flights should
     * be searched
     * @return a vector containing flight objects
     * @throws RemoteException
     */
    public Vector findFlightByCustomerAndPeriod(Customer c, Date fromDate, Date toDate) throws RemoteException;

    /**
     * returns all flight objects of a Customer between two dates
     * @param customerId is the Customer Id of the Customer object which flights should be returned
     * @param fromDate the first date of the dates between the flights should
     * be searched
     * @param toDate the second date of the dates between the flights should
     * be searched
     * @return a vector containing flight objects
     * @throws RemoteException
     */
    public Vector findFlightByCustomerAndPeriod(int customerId, Date fromDate, Date toDate) throws RemoteException;

    /**
     * returns all flight objects of a Customer with an Airline
     * @param customerId is the Customer Id of the Customer object which flights should be returned
     * @param airlineId is the Airline Id of the Airline object which flights should be returned
     * @return a vector containing flight objects
     * @throws RemoteException
     */
    public Vector findFlightByCustomerAndAirline(int customerId, int airlineId) throws RemoteException;

    /**
     * returns all flight objects of a Customer with an Airline
     * @param c is the Customer object which flights should be retuned
     * @param a the Airline object which flights should be returned
     * @return a vector containing flight objects
     * @throws RemoteException 
     */
    public Vector findFlightByCustomerAndAirline(Customer c, Airline a) throws RemoteException;

    /**
     * returns all flight objects of a Customer with an Airline between two dates
     * @param customerId is the Customer Id of the Customer object which flights should be returned
     * @param airlineId is the Airline Id of the Airline object which flights should be returned
     * @param fromDate the first date of the dates between the flights should
     * be searched
     * @param toDate the second date of the dates between the flights should
     * be searched
     * @return a vector containing flight objects
     * @throws RemoteException
     */
    public Vector findFlightByCustomerAndAirlineAndPeriod(int customerId, int airlineId, Date fromDate, Date toDate) throws RemoteException;

    /**
     * returns all flight objects of a Customer with an Airline between two dates
     * @param c is the Customer Id of the Customer object which flights should be retuned
     * @param a the Ariline object so selct the flights
     * @param fromDate the first date of the dates between the flights should
     * be searched
     * @param toDate the second date of the dates between the flights should
     * be searched
     * @return a vector containing flight objects
     * @throws RemoteException
     */
    public Vector findFlightByCustomerAndAirlineAndPeriod(Customer c, Airline a, Date fromDate, Date toDate) throws RemoteException;

    /**
     * returns a seat object from the DB which is at the passed row, seat and plane
     * @param row is the row in which the seat is
     * @param seat is the place of the seat
     * @param p is the plane in which the seat is existing
     * @return a seat object
     * @throws RemoteException
     */
    public Seat findSeatByRowSeatPlane(int row, char seat, Plane p) throws RemoteException;

    /**
     * returns a seat object from the DB which is at the passed row, seat and plane Id
     * @param row is the row in which the seat is
     * @param seat is the place of the seat
     * @param planeId is the plane in which the seat is existing
     * @return a seat object
     * @throws RemoteException
     */
    public Seat findSeatByRowSeatPlane(int row, char seat, int planeId) throws RemoteException;

    /**
     * returns a seat object from the DB by plane
     * @param p is the plane in which the seat is existing
     * @return a vector containing seat objects
     * @throws RemoteException
     */
    public Vector findSeatByPlane(Plane p) throws RemoteException;

    /**
     * returns a seat object from the DB by plane
     * @param planeId is the id of the plane object in which the seat is existing
     * @return a vector containing seat objects
     * @throws RemoteException
     */
    public Vector findSeatByPlane(int planeId) throws RemoteException;

    /**
     * returns a seat object from the DB which is booked for the passed flight
     * @param f the passed flight
     * @return a vector containing seat objects
     * @throws RemoteException
     */
    public Vector findBookedSeatByFlight(Flight f) throws RemoteException;

    /**
     * returns a seat object from the DB which is booked for the passed flight
     * @param flightId the ID of the passed flight
     * @return a vector containing seat objects
     * @throws RemoteException
     */
    public Vector findBookedSeatByFlight(int flightId) throws RemoteException;

    /**
     * returns a booking object from the DB by a passed flight and seat
     * @param flightId the passed id of the flight
     * @param seatId the passed id of the seat
     * @return a booking object
     * @throws RemoteException
     */
    public Booking findBookingByFlightAndSeat(int flightId, int seatId) throws RemoteException;

}

